home *** CD-ROM | disk | FTP | other *** search
- Plot 3.1.93
-
- Stefan Köhle
- Erhardtstr. 10
- W-7033 Herrenberg
- Tel. 07032/5146
-
-
-
-
- Dieses Programm ist Public Domain,
-
- es darf ohne Einschränkungen benutzt, kopiert und verteilt werden,
- solange sich niemand daran bereichert; der Preis pro Diskette darf
- nicht mehr als 5 DM betragen.
-
-
-
-
- Plot dient dazu, Funktionen in zwei Variablen zu zeichnen.
-
-
- Benötigt werden dazu:
-
- Die Req.Library, die ReqTools.Library, die Mathieedubbas.Library,
- die Mathtrans.Library und die IFF.Library im Libs: -Ordner.
- Sie befinden sich auf dieser Diskette im Libs -Ordner.
- Desweiteren 1 Amiga, Kickstart 1.2, 1.3, 2.x.
- Unter Kick 1.1 tuts nicht.
- Unter Kick 2.x tuts zwar, die neuen Grafikmodi werden aber nicht
- unterstützt.
-
- Speicherverbrauch:
-
- 1 MB reicht für die Sparversion (kleine Bitmap),
- ab 1.5 MB tuts dann richtig. Der Speicher darf aber nicht zu sehr
- fragmentiert sein.
- Bei 512 KB Chipmem kanns beim Start über die Workbench von der Festplatte
- eng werden, wenn die Platte zuviel Cache Speicher braucht.
- Start von Diskette oder übers CLI kann helfen.
-
-
- Start von der Workbench: Doppelklick aufs Icon.
-
- Es wird ein Screen geöffnet und ein Stringrequester fordert die Eingabe
- einer Funktion. Er wird durch RETURN oder durch Drücken von OK beendet.
- Falls die Funktion Fehler enthalten sollte, erscheint der Stringrequester
- nochmal, wobei im Fenstertitel der Fehler moniert wird.
- Falls der Stringrequester mit CANCEL beendet wird, oder nur RETURN
- gedrückt wird, kommt der Filerequester.
-
-
-
- Aufruf vom CLI aus: Plot oder: Plot Argument
-
- Argument ist entweder die Funktion selber, oder der Name einer schon
- gespeicherten Funktion.
-
- Es wird versucht, 'Argument' im eventuell vorhandenen Directory
- 'Funktionen' zu laden. Falls es kein 'Funktionen' gibt, wird versucht
- 'Argument' im aktuellen Directory zu laden. Erst wenn das auch nicht geht,
- wird 'Argument' als Funktion interpretiert.
- Wenn die Funktion Fehler enthält, kommt der Stringrequester so lange bis
- keine Fehler mehr drin sind.
-
-
- Bsp: plot sin(x^2)+cos(y^2) oder plot Funktion1
-
-
-
- Die Funktion wird zuerst auf kleiner Bitmap gezeichnet (640 x 512).
- Wenn der Ausschnitt, die Auflösung und sonstige Layoutarbeiten beendet sind,
- kann auf die große Bitmap umgeschaltet werden. (1720 x 1351)
- Hier kann man nur noch die Auflösung ändern.
-
-
-
- Unterstützte Funktionen:
-
- sin sinh arcsin arsinh
- cos cosh arccos arcosh
- tan tanh arctan artanh
- cot coth arccot arcoth
- sec cosec
- sqr sqrt
- log ln exp
- fac
- abs
- int
-
-
-
- Menüs:
-
- Projekt
- neue Funktion: Der Stringrequester erscheint, alle Faktoren werden
- auf die Defaultwerte gesetzt, es wird auf die kleine
- Bitmap umgeschaltet.
-
- Funktion ändern: Der Stringrequester erscheint mit der Funktion, welche
- ediert werden kann. Faktoren bleiben erhalten.
-
- Funktion laden: Eine Funktion wird geladen, mit allen Faktoren und
- sonstigen Einstellungen, es wird auf jeden Fall mit
- kleiner Bitmap begonnen.
-
- Funktion speichern: Eine Funktion wird als String gespeichert mit allen
- Faktoren und sonstigen Einstellungen.
- Falls ein Directory 'Funktionen' existiert, wird
- dorthin verzweigt, sonst nicht.
-
- Bild speichern: Die gezeichnete Funktion wird als IFF Bild gespeichert.
- Falls ein Directory 'Bilder' existiert, wird dorthin
- verzweigt, sonst nicht.
- Je nach gewählter Bitmapgröße als 640 x 512 bei
- kleiner Bitmap, oder als 1720 x 1351 bei großer Bitmap.
- An den Namen wird, wenn nicht schon vorhanden, ein .IFF
- drangehängt.
-
- Bild laden: Funktioniert noch nicht. Irgendwie tut die Ladeprocedur
- aus der IFF.Library nicht mit Superbitmap Windows.
- Wer weiß, wies geht, möge es mir kundtun.
-
- Quit: Ende. Geht auch mit ESC.
-
-
- Auflösung
-
- lächerlich: Es werden bei kleiner Bitmap 16 x 12 = 192 , und
- bei grosser Bitmap 48 x 36 = 1728 Punkte
- berechnet.
-
- gering: Es werden bei kleiner Bitmap 24 x 18 = 432 , und
- bei grosser Bitmap 72 x 54 = 3888 Punkte
- berechnet.
-
- mittel: Es werden bei kleiner Bitmap 32 x 24 = 768 berechnet.
- Bei großer Bitmap passt das mit der Rasterung nicht so
- ganz, daher ist dieser Punkt dann nicht anwählbar.
-
- hoch: Es werden bei kleiner Bitmap 48 x 36 = 1728 , und
- bei grosser Bitmap 144 x 108 = 15552 Punkte
- berechnet.
-
- noch höher: Es werden bei kleiner Bitmap 96 x 72 = 6912 , und
- bei grosser Bitmap 288 x 216 = 62208 Punkte
- berechnet.
-
-
-
- Einstellungen
-
- Raster: Es werden gestrichelte Hilfslinien gezeichnet.
-
- Kasten: Es wird ein Kasten gezeichnet, der den Zeichenraum umrahmt.
-
- Achsen: Die Achsen werden eingezeichnet.
-
- Beschriftung: Die Achsen werden beschriftet.
-
- Fläche: Die Funktion wird ausgefüllt gezeichnet, was aussieht
- wie hidden-lines.
- Bei nicht-Fläche gibts Liniengrafik, was viel schneller geht,
- aber leicht unübersichtlich wird.
-
- f(x,y) reinschreiben: Die Funktion wird oben links reingeschrieben.
-
- Kleine Bitmap: Ein normaler Hires Interlace Screen (640 * 512).
-
- Große Bitmap: Ein Hires Interlace Screen aber mit SuperBitmap Window
- und mit einer 1720 x 1351 Punkte großen Bitmap.
- Diese wird mit der Maus gescrollt. Bei zu wenig Speicher
- ist dieser Menüpunkt nicht anwählbar, dann kommt aber
- schon beim Programmstart ein Requester, der darauf
- hinweist.
-
-
-
-
-
- Tastaturbelegung kleine Bitmap:
-
- Mit ESC oder CTRL C wird das Programm beendet.
-
- Die HELP - Taste bringt ein Fenster, in dem die Tastaturbelegung
- gezeigt wird. Das Fenster ist nur aktiv solange die HELP-Taste
- gedrückt ist. Nur bei kleiner Bitmap.
-
- Der gezeigte Ausschnitt kann in X-Richtung mit den Cursortasten 'links'
- und 'rechts', bzw. auf dem Ziffernblock mit den Tasten '4' und '6' um
- eine halbe Einheit nach links bzw. nach rechts verschoben werden.
-
- Für die Y-Richtung gibt es die Cursortasten 'rauf' und 'runter'.
-
- Die Z-Richtung wird über die Tasten '8' und '2' auf dem Ziffernblock
- bedient.
-
-
- Mit SHIFT geht es jeweils eine ganze Einheit und mit ALT geht es einen
- ganzen Bildschirmausschnitt.
-
-
- Mit F1 wird hinein gezoomt, mit F6 heraus.
- Mit F2 bzw F7 wird die Funktion in X-Richtung gestreckt bzw gestaucht.
- F3 F8 Y
- F4 F9 Z
-
- Mit F10 gibts wieder die Anfangseinstellung.
-
- Die gleichen Aktionen können auch mit den Zifferntasten direkt unter
- den Funktionstasten erreichet werden, falls die Funktionstasten schon
- anderweitig vergeben sein sollten.
-
-
-
- Tastaturbelegung große Bitmap:
-
- Mit ESC kann das Programm beendet werden.
-
-
-
- N' paar Rechenzeiten, gemessen auf Amiga 1000:
-
- f(x,y) = sin(x^2+y^2) (in Funktionen als Blubb zu finden)
-
- Auflösung kleine Bitmap große Bitmap
-
- Fläche noch höher 1.27 min 15.38 min
- Gitter noch höher 0.48 min 8.06 min
- Fläche lächerlich 0.03 min 0.31 min
- Gitter lächerlich 0.02 min 0.18 min
-
-
- Desgleichen auf Amiga 2000 mit 68030-Karte:
-
- Fläche noch höher 0.21 min 3.33 min
- Gitter noch höher 0.10 min 1.49 min
- Fläche lächerlich 0.012 min 0.09 min
- Gitter lächerlich 0.008 min 0.05 min
-
-
-
- Zum Programm selber:
-
- Von den 300 KB Source Code stammen 51,8 % von mir, der Rest ist geklaut.
-
- Die Routine, die den Funktionsstring interpretiert, stammt von
- Stefan Salewskis R.o.M. (AMOK 11).
-
- Der Filerequester ist aus der Req.Library von Jürgen Zimmermann (AMOK 55)
-
- Die anderen Requester sind aus der Reqtools.Library von Nico Francois,
- M2Amiga Portierung von Kai Bolay,
- ReqToolsSupport von Frank Lömker (AMOK 69).
-
- Die Routine zum Bild speichern ist aus der IFFLib von Christian A. Weber,
- M2Amiga Portierung von Fidtjof Siebert (AMOK 18).
-
- Alle Module sind mit den Optionen -s (kein Stapelcheck), -d (Optimierung),
- -y (SMALL-Modell) kompiliert. Das bedeutet 1.5 KB weniger Code und
- um die 7 % weniger Rechenzeit.
-
- Gelinkt mit der Option -x (Unützer Code fliegt raus), bringt 4 KB weniger
- Code.
-
-
- Bugs, Unzulänglichkeiten:
-
- - Da aus mir unbekannten Gründen die Codegröße pro Modul auf 32K begrenzt
- ist, paßt die Procedur, die das Raster vorne und rechts zeichnet, nicht
- mehr ins Hauptprogramm. Daher stoppt das Scrolling währenddessen.
- Je nach Auflösung kann das mehrere Sekunden dauern.
-
- - Manchmal gibts Überläufe. Ich kann sie nicht abstellen, weil's mir
- jedesmal auch den Debugger zerlegt. Aber ich gebe nicht auf.
- z.B: 1/(x^2-y^2)
- -1/abs(x*y)
- 1/(x*y)
-
- - Die Mitteilungsrequester kriege ich einfach nicht auf meinen Screen,
- wohingegen der Stringrequester, der genau gleich behandelt wird,
- einwandfrei funktioniert.
-
- - Beim Start über die Workbench erscheint immer dieses doofe CLI-Fenster
- und ich habe keine Ahnung warum.
-
- - Der Speicherverbrauch ist unnötig hoch, da für alle theoretisch möglichen
- 62208 Punkte Speicher reserviert wird.
-
-
- Zukünftige Erweiterungen:
-
- - Speicherverbrauch reduzieren.
-
- - Bild laden. Sobald mir jemand sagt, warum die IFFLib bei SuperBitmaps
- versagt.
-
- - Hardcopy vom Programm aus.
-
- - Umsetzung auf OS 3.0 sobald ich meinen Amiga 4000 habe.
-
- - Icons für gespeicherte Funktionen und Bilder mit Default Tool.
-
-
-
-
-
- Interessante Funktionen, gute Ideen, Kritik, Geld, Geschenke
- bitte an obige Addresse.
-
-
- Viel Spaß! - Stefan -
-